#include<iostream>
#include<string>
#include<cmath>
#include<algorithm>
#include<utility>

using namespace std;
// struct Book
// {
//     char title[100];
//     char writer[100];
//     cahr r [100];
//     int pages;
//     double price;
// };
// int main()
// {
//     book b1={"程序设计基础","吴","清华",283,49,0};
//     book b2;
//     strcpy
//     return 0;
// }
// struct Students
// {
//     string name;
//     int math;
//     int eng;
//     int sheji;
//     int dex;
//     int all() const 
//     {
//         return math+eng+sheji;
//     }  
//     double average() const
//     {
//         return all()/3.0;
//     }

// int main()
// {   
//     int n;
//     cin>> n;
//     vector<Students> stu(n);
//     for (int i = 0; i < n; i++)
//     {
//         cin>>stu[i].name>>stu[i].math>>stu[i].eng>>stu[i].sheji;
//         stu[i].dex= i;
//     }
//     sort(stu.begin(),stu.end() ,[](const Students &a, const Students &b)
//     {
//         if(a.average()!=b.average())
//         {
//             return a.average()>b.average();
//         }
//         else
//         return a.dex<b.dex;
//     });
//     for (int i = 0; i < n; i++)
//     {   
//         cout<<i+1<<" "<<stu[i].name<<" "<<stu[i].math<<" "<<stu[i].eng<<" "<<stu[i].sheji<<endl;
//     } 
//     return 0;
// }

// struct Students
// {
//     string name;
//     int yuwen,shuxue,eng;
// };
// bool ismatchstu(const Students &a,const Students &b)
// {
//     return abs(a.shuxue-b.shuxue)<=5 && 
//            abs(a.yuwen-b.yuwen)<=5&&
//            abs(a.eng-b.eng)<=5&&
//            abs((a.yuwen+a.shuxue+a.eng)-(b.yuwen+b.shuxue+b.eng))<=10;
// }
// int main()
// {
//     int n;
//     cin>>n;
//     vector<Students> stu(n);
//     for (int i = 0; i < n; i++)
//     {
//         cin>>stu[i].name>>stu[i].yuwen>>stu[i].shuxue>>stu[i].eng;
//     }
// sort(stu.begin(),stu.end(),[](const Students &a,const Students &b) 
// {
//     return a.name<b.name;
// });
// vector<pair<string,string>> stuname;
// for (int i = 0; i < n; i++)
// {
//     for (int j = i+1; j < n; j++)
//     {
//         if(ismatchstu(stu[i],stu[j]))
//         {
//             // push_back(make_pair(stu[i].name,stu[j].name));
//             stuname.emplace_back(stu[i].name,stu[j].name);
//         }
//     }
// }
// for(const auto &i:stuname)
//     {cout<<i.first<<" "<<i.second<<endl;
//     }
//     return 0;
// }


int gcd(int a,int b)
{
    while (b!=0)
    {
        int t = b;
        b = a%b;
        a = t;
    }
    return a;
}
int threegcd(int a,int b,int c)
{
    return gcd(gcd(a,b),c);
}
int main()
{   
    int k;
    cin>>k;
    long long sum = 0;
    for (int a = 1; a <= k; a++)
    {
        for (int b = 1; b <= k; b++)
        {
            for (int c = 1; c <= k; c++)
            {
                sum+=threegcd(a,b,c);
            }   
        }
    }
    cout<<sum;
    return 0;
}







